Python网络爬虫入门笔记1

您所在的位置:网站首页 jupyter notebook会自动关闭 Python网络爬虫入门笔记1

Python网络爬虫入门笔记1

2023-07-10 02:03| 来源: 网络整理| 查看: 265

使用程序:jupyter notebook

语言:Python3

jupyter中 Markdown用来写笔记,同时能写html代码,Code用来写代码 特性:代码编写顺序无所谓,执行顺序一定是自上而下的。(只要在一个cell中执行定义好多变量函数等,那么数据就会被加载到当前文件缓存中) -jupyter快捷操作:        -插入cell        a,b      上插,下插        -删除cell        x        -执行cell        shift+enter        -切换cell模式     m,y  切    markdown,切code        -切换成编辑模式    代码左侧双击        -执行结果收回     结果左侧双击         -打开帮助文档     shift+tab   调用方法时不知道方法用法        -自动补全          tab        -查看快捷键      空白区域左键+h 原文件可导出为html  File--DownLoad as--html一般情况下不要导出,会造成图片缺失 爬虫:编写程序模拟浏览器上网爬取数据   分类     -通用爬虫(爬一整张页面源码数据)     -聚焦爬虫(爬取一部分数据,建立在通用爬虫基础上)     -增量式爬虫(监测网站更新情况,以便爬取最新更新出来的数据)     -分布式爬虫(提高爬取效率的终极武器,一般情况不用,因为太快了,会干扰别人网站) -反爬机制         -作用到门户网站,保护数据 -反反爬策略         -作用到爬虫程序,破解反爬机制 -风险 :-干扰网站的正确运行       - 爬取受法律保护的数据或信息 -如何避免进局子?            -时常优化自己的爬虫程序            -在使用传播自己爬取的数据时,审查自己抓取的内容,如果发现了涉及用户隐私和商业机密内容,注意及时停止爬取或传播 -反爬机制     -robots协议:防君子不防小人,嘿嘿       -纯文本协议,协议规定网站中哪些数据可以被爬取,哪些不可以被爬取     -破解:主观性的不遵从该协议即可     -UA检测:网络后台会检测对应的user-agent,判定当前请求是否异常请求     -破解: UA伪装,即通过抓包工具获取基于浏览器的user-agent值,将其伪装作用到一个字典中,并将该字典作用到请求方法(get,post)的headers参数中 -request模块:爬虫中基于网络请求的一个模块   pip install (需要导入的模块名) -i http://pypi.douban.com/simple --trusted-host pypi.douban.com -作用:模拟浏览器发出请求 -编码流程:      -1.指定url      -2.发起请求      -3.获取响应数据(爬取到的页面源码数据)      -4.持久化储存

1.爬取搜狗浏览器

import requests #1.指定url url = 'https://www.sogou.com/' #2.发起请求get方法的返回值为请求对象 response = requests.get(url=url) #3.获取响应数据  .text返回字符串类型的响应数据 page_text = response.text #4.持久化储存 with open('./sogou.html','w',encoding='utf-8') as fp:     fp.write(page_text)

 

2.-实现简易网页采集器    -基于搜狗针对不同的关键词将其对应的页面数据进行爬取 

import requests keyWord = input('enter a key world:') headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57' } # 携带请求参数的url,想要爬取不同关键词对应的页面,需要将url携带参数动态化 # 实现参数动态化: # 1.携带参数以键值对形式封存到一个字典中 # 2.字典作用到get方法params参数中 # 3.原始携带参数的url需要将参数删除 params ={ 'query':keyWord } url = 'http://www.sogou.com/web' # params参数(字典):保存请求时url携带参数, # 实现了UA伪装 response = requests.get(url = url,params = params,headers = headers) # 若出现乱码,则修改响应数据的编码格式为utf-8,目前本人没遇到,但是写了肯定没错 response.encoding = 'utf-8' page_text = response.text fileName = keyWord + '.html' with open(fileName,'w',encoding='utf-8') as fp: fp.write(page_text) print(fileName,'爬取完毕!!!') # 出现问题:异常访问请求(网站后台检测出该次请求是爬虫程序发出,不是浏览器发起的请求都是异常访问请求) #如何判判定是否浏览器发起的请求(判定请求头中的user-agent) user-agent -- 请求载体的身份标识 #请求载体 : 浏览器(浏览器的身份标识统一固定,身份标识可以从抓包工具中获取)或爬虫程序(身份标识是各自不同的)

 3.-爬取豆瓣电影的电影详情数据 url:https://movie.douban.com/typerank?type_name=%E7%88%B1%E6%83%85&type=13&interval_id=100:90&action=     -动态加载数据的捕获         -动态加载数据:使用requests模块无法实现每次都可见           原因:有些数据是通过非浏览器地址栏的url请求到的,这些通过其他请求请求到的数据就是动态加载的数据         -如何检测是否存在动态加载数据:基于抓包工具进行局部搜索  找个响应中内容ctrl+f搜索想要爬取数据 0 of 0 即为动态加载数据         -如何捕获动态加载数据:基于抓包工具进行全局搜索(非100%成功) 列表栏单击然后ctrl+f 定位到动态加载数据包可以提取出                                                           -请求的url(去掉问号后内容)                                                           -请求方式                                                           -请求携带的参数                                                           -看到响应数据

import requests headers ={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57' } url = 'https://movie.douban.com/j/chart/top_list' params = { 'type': 13, 'interval_id': '100:90',#评分区间 'action': '', 'start': '0', #从第几部开始取 'limit': '20' #一次取多少部 } response = requests.get(url = url,params = params,headers = headers) # .json将获取字符串形式的json数据反序列化字典或者列表 page_text = response.json() # 解析出电影名称和评分 for movie in page_text: name =movie['title'] score = movie['score'] print(name,score)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3